import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

let lifeData = {};

try {
	// 尝试获取本地存储的lifeData变量
	lifeData = uni.getStorageSync('lifeData');
} catch (e) {

}

// 需要永久存储的状态变量（移除评论回复相关状态）
let saveStateKeys = [
	'vuex_user',
	'vuex_token',
	'vuex_setting',
	'vuex_openid',
	'vuex_signin',
	'vuex_webs',
	'vuex_lasturl',
	'vuex_theme',
	'vuex_invite_id',
	'vuex_history_keyword',
	// 注意：这里不再包含vuex_comment_replyId和vuex_comment_isReplying
];

// 保存变量到本地存储中
const saveLifeData = function(key, value) {
	if (saveStateKeys.indexOf(key) != -1) { // 仅保存需要永久存储的变量
		let tmp = uni.getStorageSync('lifeData');
		tmp = tmp ? tmp : {};
		tmp[key] = value;
		uni.setStorageSync('lifeData', tmp);
	}
}

const store = new Vuex.Store({
	state: {
		// 原有永久存储的状态保持不变...
		vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {},
		vuex_history_keyword: lifeData.vuex_history_keyword ? lifeData.vuex_history_keyword : [],
		vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
		vuex_openid: lifeData.vuex_openid ? lifeData.vuex_openid : '',
		vuex_invite_id: '',
		vuex_config: {},
		vuex_setting: lifeData.vuex_setting ? lifeData.vuex_setting : {},
		vuex_theme: lifeData.vuex_theme ? lifeData.vuex_theme : {},
		vuex_lasturl: lifeData.vuex_lasturl ? lifeData.vuex_lasturl : '/pages/index/index',
		vuex_address: {},
		vuex__token__: '',
		vuex_third: {},
		vuex_cart: [],
		vuex_current: 0,
		vuex_signin: {},
		vuex_webs: {},
		vuex_parse_style: {
			h1: 'padding:20rpx 0;',
			h2: 'padding:10rpx 0;',
			// ...（其他样式保持不变）
			img:'vertical-align: middle;'
		},
		vuex_tabbar: {
			// ...（导航配置保持不变）
		},
		
		// 评论回复状态（不永久存储，初始值固定为null/false）
		vuex_comment_replyId: null, // 不从lifeData读取，避免持久化
		vuex_comment_isReplying: false ,// 不从lifeData读取，避免持久化
    vuex_comment_replyName:'',
    navfixed: false,
	},
	mutations: {
		$uStore(state, payload) {
			let nameArr = payload.name.split('.');
			let saveKey = '';
			let len = nameArr.length;
			if (len >= 2) {
				let obj = state[nameArr[0]];
				for (let i = 1; i < len - 1; i++) {
					obj = obj[nameArr[i]];
				}
				obj[nameArr[len - 1]] = payload.value;
				saveKey = nameArr[0];
			} else {
				state[payload.name] = payload.value;
				saveKey = payload.name;
			}
			saveLifeData(saveKey, state[saveKey]); // 仅对saveStateKeys中的变量生效
		}
	},
	actions: {
		// 开始回复评论（状态仅在内存中）
		startCommentReply({ commit }, item) {
			commit('$uStore', {
				name: 'vuex_comment_replyId',
				value: item.id,
			});
			commit('$uStore', {
				name: 'vuex_comment_isReplying',
				value: true
			});
		  commit('$uStore', {
		  	name: 'vuex_comment_replyName',
		  	value: item.nickname
		  });
		},
    // 开始回复评论（状态仅在内存中）
    startNavFixed({ commit }, item) {
    	commit('$uStore', {
    		name: 'navfixed',
    		value: item,
    	});
    },
		// 取消回复评论（状态仅在内存中）
		cancelCommentReply({ commit }) {
			commit('$uStore', {
				name: 'vuex_comment_replyId',
				value: null
			});
			commit('$uStore', {
				name: 'vuex_comment_isReplying',
				value: false
			});
      commit('$uStore', {
      	name: 'vuex_comment_replyName',
      	value: ''
      });
		}
	}
})

export default store